OutRecordsForm = Ext.extend(Ext.Window, {
	title : '成品包出库',
	productcode : null,
	id : "OutRecordsFormWin",
	productcode : null,
	autoScroll : true,
	modal : true,
	width : 717,
	height : 500,
	buttonAlign : "center",
	initComponent : function() {
		this.items = [{
			xtype : 'form',
			frame : true,
			autoScroll : true,
			url : _ctxPath + "saveOutRecords.do?op=ajax",
			id : 'outRecordsForm',
			width : 683,
			reader : new Ext.data.JsonReader({}, [{
								name : 'outRecords.id',
								mapping : 'id'
							}, {
								name : 'outRecords.productcode',
								mapping : 'productcode'
							}, {
								name : 'outRecords.outcode',
								mapping : 'outcode'
							}, {
								name : 'outRecords.outtime',
								mapping : 'outtime'
							}, {
								name : 'outRecords.pickman',
								mapping : 'pickman'
							}, {
								name : 'outRecords.remark',
								mapping : 'remark'
							}]),
			items : [{
						xtype : 'hidden',
						name : 'outRecords.id'
					}, {
						xtype : 'fieldset',
						title : '出库单信息',
						width : 654,
						items : [{
							xtype : 'compositefield',
							fieldLabel : '出库单编号',
							hideLabel : true,
							anchor : '100%',
							items : [{
										xtype : 'displayfield',
										value : '出库单编号：',
										flex : 1,
										width : 76
									}, {
										xtype : 'textfield',
										name : 'outRecords.outcode',
										readOnly : true,
										allowBlank : false,
										value : this.productcode
												+ Ext.util.Format.date(
														new Date(), "Ymd"),
										width : 100
									}, {
										xtype : 'displayfield',
										value : '生产编号：',
										flex : 1,
										width : 66
									}, {
										xtype : 'textfield',
										id : 'productcode',
										name : 'outRecords.productcode',
										allowBlank : false,
										value : this.productcode,
										width : 77,
										flex : 1
									}, {
										xtype : 'displayfield',
										value : '提货人：',
										width : 49
									}, {
										xtype : 'textfield',
										name : 'outRecords.pickman',
										width : 72
									}, {
										xtype : 'displayfield',
										value : '出库时间',
										width : 50
									}, {
										xtype : 'datefield',
										name : 'outRecords.outtime',
										value : Ext.util.Format.date(
												new Date(), "Y-m-d"),
										format : 'Y-m-d',
										width : 92
									}]
						}, {
							xtype : 'textarea',
							fieldLabel : '备注',
							anchor : '100%',
							name : 'outRecords.remark'
						}]
					}, {
						xtype : 'compositefield',
						fieldLabel : '条形码输入框',
						anchor : '80%',
						name : 'barcode',
						items : [{
							xtype : 'textfield',
							id : 'barcode',
							enableKeyEvents : true,
							listeners : {
								keydown : function(f, e) {
									if (e.keyCode == 13) {
										Ext.getCmp("valbtn").fireEvent("click",
												this);
									};
								}
							}
						}, {
							xtype : 'button',
							id : 'valbtn',
							text : '校验',
							iconCls : "btn-serach",
							handler : function() {
							},
							listeners : {
								click : function(e) {
									OutRecordsForm.cargoCheck(Ext
											.getCmp("barcode").getValue());
								}
							}
						}, {
							xtype : 'button',
							text : '重新校验',
							iconCls : "btn-back",
							handler : function() {
								Ext.Msg.confirm("信息确认", "您确认要重新校验吗？", function(
										c) {
									if (c == "yes") {
										Ext.getCmp("grid2").getStore()
												.removeAll();
										Ext.getCmp("grid1").getStore().reload();
									}
								})
							}
						}]
					}, {
						xtype : 'fieldset',
						title : '出库成品包扫码校验',
						width : 652,
						layout : 'hbox',
						items : [{
							xtype : 'grid',
							id : 'grid1',
							stripeRows : true,
							title : '库存成品包',
							store : new Ext.data.JsonStore({
										autoLoad : true,
										url : 'showAllCargo.do?outRecords.productcode='
												+ this.productcode,
										root : '',
										totalProperty : 'totalCount',
										idProperty : 'cargoplu',
										fields : ['id', 'cargoplu', 'cargoname']
									}),
							width : 316,
							height : 372,
							columns : [new Ext.grid.RowNumberer(), {
										xtype : 'gridcolumn',
										dataIndex : 'cargoname',
										header : '名称',
										sortable : true,
										width : 100,
										align : 'right'
									}, {
										xtype : 'gridcolumn',
										dataIndex : 'cargoplu',
										header : '条形码',
										sortable : true,
										width : 100
									}]
						}, {
							xtype : 'grid',
							id : 'grid2',
							title : '已校验列表',
							store : new Ext.data.Store(),
							height : 376,
							width : 302,
							columns : [{
										xtype : 'gridcolumn',
										dataIndex : 'cargoname',
										header : '名称',
										sortable : true,
										width : 100,
										align : 'right'
									}, {
										xtype : 'gridcolumn',
										dataIndex : 'cargoplu',
										header : '条形码',
										sortable : true,
										width : 100
									}]
						}]
					}]
		}];
		this.buttons = [{
			text : "确认出库",
			id : 'btnsave',
			iconCls : "btn-save",
			handler : function(b, e) {
				Ext.Msg.confirm("信息确认", this.text + "吗？", function(c) {
							if (c == "yes") {
								var a = Ext.getCmp("outRecordsForm");
								var g = Ext.getCmp("maingrid");
								if (a.getForm().isValid()) {
									a.getForm().submit({
										method : "post",
										waitMsg : "正在提交数据...",
										success : function(b, c) {
											var e = Ext.util.JSON
													.decode(c.response.responseText);
											Ext.Msg.alert("操作信息", "保存成功！");
											g.getStore().reload();
										},
										failure : function(b, c) {
											var e = Ext.util.JSON
													.decode(c.response.responseText);
											Ext.MessageBox.show({
														title : "操作信息",
														msg : e.message,
														buttons : Ext.MessageBox.OK,
														icon : "ext-mb-error"
													});
										}
									});
								}
							}
						})
			}
		}, {
			text : "取消",
			iconCls : "btn-cancel",
			handler : function() {
				Ext.getCmp("OutRecordsFormWin").close();
			}
		}];
		OutRecordsForm.superclass.initComponent.call(this);
		if (this.productcode != null && this.productcode != "undefined") {
			var form = Ext.getCmp("outRecordsForm");
			form.getForm().load({
				deferredRender : false,
				url : _ctxPath
						+ "viewOutRecords.do?op=ajax&outRecords.productcode="
						+ this.productcode,
				waitMsg : "正在载入数据...",
				success : function(b, c) {
					Ext.ux.Toast.msg("提示", "已经出库，只能编辑出库单备注信息！");
					form.getForm().items.each(function(f) {
								if (f.getName() != 'outRecords.remark'
										&& f.getName() != 'barcode') {
									f.setReadOnly(true);
								}
							})
					Ext.getCmp('btnsave').setText("保存");
					// Ext.getCmp("grid1").getStore().load();
				},
				failure : function(a, b) {
					Ext.ux.Toast.msg("提示", "尚未出库");
				}
			});
		}
		OutRecordsForm.cargoCheck = function(val) {
			if (val == "") {
				alert("请输入条形码！");
				return;
			}
			var grid1 = Ext.getCmp("grid1");
			var store1 = grid1.getStore();
			if (store1.getCount() == 0) {
				alert("警告！已经校验完毕,没有更多的记录可匹配！");
				return;
			}
			var grid2 = Ext.getCmp("grid2");
			var idx = store1.findExact('cargoplu', val);
			if (idx >= 0) {
				Ext.getCmp("barcode").setValue("");
				var rec = store1.getAt(idx);
				Ext.ux.Toast.msg("信息", rec.data.cargoname + "("
								+ rec.data.cargoplu + ")记录匹配");
				store1.remove(rec);
				grid2.getStore().insert(0, rec);
			} else {
				if (grid2.getStore().findExact('cargoplu', val) >= 0) {
					alert("提醒！" + val + "该成品包已经通过校验!");
				} else {
					alert("警告！" + val + "没有该成品包，请检查！");
				}
			}
			Ext.getCmp("barcode").focus(true);
		}
	}
});
